package controles;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import modeles.*;

import fenetres.AddProductStockFrame;

public class AddProductStockAction implements ActionListener{
	
	AddProductStockFrame addProdStockFrame;
	Stock oStock;
	
	public AddProductStockAction(AddProductStockFrame _addProdStockFrame){
		addProdStockFrame = _addProdStockFrame;
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
		
		if(e.getSource() == addProdStockFrame.nomCombo){
			int indiceSelected = addProdStockFrame.nomCombo.getSelectedIndex();
			Produit oProduit = addProdStockFrame.listProduitsBase.get(indiceSelected);
			addProdStockFrame.codeProdTxt.setText(oProduit.getCodeProd());
		}
		if (e.getSource() == addProdStockFrame.ajoutBut){
			
			if(addProdStockFrame.qteTxt.getText().isEmpty()){
				JOptionPane.showMessageDialog (null, "Veuillez saisir la quantite du produit !", "E-commerce", JOptionPane.WARNING_MESSAGE) ;
			}
			else{
				int iLigne = addProdStockFrame.tableModel.getRowCount();
				//tableModel.addNewRow();
				String nomProduit = addProdStockFrame.nomCombo.getSelectedItem().toString();
				String codeProd = addProdStockFrame.codeProdTxt.getText();
				
				DBManager dbManager = new DBManager ();
				Produit oProduit = new Produit();
				oProduit.setCodeProd(codeProd);
				int qteEntre = Integer.valueOf(addProdStockFrame.qteTxt.getText());
				
				//Stock
				int indiceStockSelected = addProdStockFrame.stockCombo.getSelectedIndex();
				Stock oStock = addProdStockFrame.listStock.get(indiceStockSelected);
				
				oProduit = oProduit.findProductByCode(dbManager);
					InfoStock oInfoStock = new InfoStock();
					oInfoStock.setInfoStock_code(addProdStockFrame.numBETxt.getText());
					oInfoStock.setProduit_id(oProduit.getProduit_id());
					oInfoStock.setInfoStock_produit_code(oProduit.getCodeProd());
					oInfoStock.setInfoStock_produit_libelle(oProduit.getProduit_libelle());
					oInfoStock.setInfoStock_categ_libelle(oProduit.getCateg_libelle());
					
					oInfoStock.setStock_id(oStock.getStock_id());
					oInfoStock.setStock_code(oStock.getStock_code());
					oInfoStock.setStock_nom(oStock.getStock_name());
					oInfoStock.setMagasinier(addProdStockFrame.userConnected.getNom());
					
					
					if(!addProdStockFrame.qteTxt.getText().isEmpty()) oInfoStock.setQte(Integer.valueOf(addProdStockFrame.qteTxt.getText()));
					
					addProdStockFrame.listProduitSelected.add(oInfoStock);
	
					addProdStockFrame.updateTable();

			}
			
		}
		
		if(e.getSource() == addProdStockFrame.supprBut){
			//supprimer la ligne du tableau
			int irowSelected = addProdStockFrame.produitTable.getSelectedRow () ;
			if (irowSelected == -1)
			{
				JOptionPane.showMessageDialog (null, "Veuillez selectionner le produit Ã  supprimer !", "E-commerce", JOptionPane.WARNING_MESSAGE) ;
			}
			else
			{
				addProdStockFrame.listProduitSelected.remove(irowSelected);
				addProdStockFrame.updateTable();
			}
		}
		
		//mise a jour des produits offerts par les fournisseurs
		
		if(e.getSource() == addProdStockFrame.validerProdBut){
			boolean bRes = true;
			boolean bRes1 = true;
		
			for(int i=0; i<addProdStockFrame.listProduitSelected.size();i++){
				DBManager dbManager =  new DBManager();
				DBManager dbManager1 =  new DBManager();
				InfoStock oInfoStock =  addProdStockFrame.listProduitSelected.get(i);
				
				//enregistrement de l'info produit
				bRes = oInfoStock.storeBE(dbManager);
				bRes1 = oInfoStock.storeProductToStock(dbManager1);
				
			}
			
			if(bRes && bRes1){
				JOptionPane.showMessageDialog(null, "Mise a jour du stock reussie","Message",JOptionPane.INFORMATION_MESSAGE);
				addProdStockFrame.dispose();
			}
		}
		
		if(e.getSource() == addProdStockFrame.annulerProdBut){
			
			addProdStockFrame.dispose();
		}
	}

}
